package cn.wzut.edut.controller;

import cn.wzut.edut.pojo.JsonResult;
import cn.wzut.edut.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotNull;

/**
 * 角色控制层
 */
@Validated
@RestController
@RequestMapping("/role")
public class RoleController {

    @Autowired
    RoleService roleService;

    /**
     * 创建角色请求
     * @param roleName 角色名
     * @param permissionIds 角色拥有权限列表
     * @param menuIds 角色拥有菜单列表
     * @return
     */
    @GetMapping("/create")
    public JsonResult createRole(@RequestParam(value = "rolename") @NotNull String roleName,
                                 @RequestParam(value = "permissions_id") @NotNull String[] permissionIds,
                                 @RequestParam(value = "menus_id") @NotNull String[] menuIds){
        return new JsonResult(roleService.createRole(roleName, permissionIds, menuIds));
    }

    /**
     * 删除角色请求
     * @param roleIds
     * @return
     */
    @PostMapping("/delete")
    public JsonResult delRole(@RequestParam(value = "id") @NotNull String[] roleIds){
        return new JsonResult(roleService.delRole(roleIds));
    }

    /**
     * 更新角色名请求
     * @param roleId
     * @param roleName
     * @return
     */
    @PostMapping("/update/rolename")
    public JsonResult updateRoleName(@RequestParam(value = "id") @NotNull String roleId,
                                     @RequestParam(value = "change_name") @NotNull String roleName){
        return new JsonResult();
    }

    /**
     * 更新角色所拥有菜单请求
     * @param roleId
     * @param delMenuIds
     * @param addMenuIds
     * @return
     */
    @PostMapping("/update/menus")
    public JsonResult updateRoleMenuRel(@RequestParam(value = "id") @NotNull String roleId,
                                        @RequestParam(value = "del_menusid") @NotNull String[] delMenuIds,
                                        @RequestParam(value = "add_menusid") @NotNull String[] addMenuIds){
        return new JsonResult(roleService.updateRoleMenuRel(roleId, delMenuIds, addMenuIds));
    }

    /**
     * 更新角色所拥有权限请求
     * @param roleId
     * @param delPermisssionIds
     * @param addPermisssionIds
     * @return
     */
    @PostMapping("/update/permisssions")
    public JsonResult updateRolePermissionRel(@RequestParam(value = "id") @NotNull String roleId,
                                              @RequestParam(value = "del_permisssion_id") @NotNull String[] delPermisssionIds,
                                              @RequestParam(value = "add_permisssion_id") @NotNull String[] addPermisssionIds){
        return new JsonResult();
    }

    /**
     * 获取角色分页列表请求
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/get/role_list")
    public JsonResult getRoleList(@RequestParam(value = "pagenum") @NotNull long current,
                                  @RequestParam(value = "pagesize") @NotNull long size){
        return new JsonResult(roleService.getRoleList(current, size));
    }

    /**
     * 根据角色名获取角色分页列表请求
     * @param roleName
     * @param current
     * @param size
     * @return
     */

    @GetMapping("/get/list_by_name")
    public JsonResult getRoleListByName(@RequestParam(value = "rolename") @NotNull String roleName,
                                        @RequestParam(value = "pagenum") @NotNull long current,
                                        @RequestParam(value = "pagesize") @NotNull long size){
        return new JsonResult();
    }

    /**
     * 通过菜单查询角色分页列表请求
     * @param menuId
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/get/list_by_menu")
    public JsonResult getRoleByMenu(@RequestParam(value = "menu_id") @NotNull String menuId,
                                    @RequestParam(value = "pagenum") @NotNull long current,
                                    @RequestParam(value = "pagesize") @NotNull long size){
        return new JsonResult(roleService.getRoleByMenu(menuId, current, size));
    }

    /**
     * 通过权限查询角色分页列表请求
     * @param permissionId
     * @param current
     * @param size
     * @return
     */
    @GetMapping("/get/list_by_permission")
    public JsonResult getRoleByPermission(@RequestParam(value = "permission_id") @NotNull String permissionId,
                                    @RequestParam(value = "pagenum") @NotNull long current,
                                    @RequestParam(value = "pagesize") @NotNull long size){
        return new JsonResult(roleService.getRoleByMenu(permissionId, current, size));
    }

























//    /**
//     * 获取角色菜单路由表请求
//     * @param request 请求头参数
//     * @return
//     */
//    @GetMapping("/menu")
//    public JsonResult getMenuByRole(HttpServletRequest request, String roleid){
//        String token = request.getHeader("token"); // 获取请求头中的token
//        return new JsonResult(roleService.getMenuListByRole(token, roleid));
//    }
//
//    /**
//     * 更新角色菜单请求
//     * @param request 请求头参数
//     * @return
//     */
//    @GetMapping("/updatemenu")
//    public JsonResult UpdateMenuByRole(HttpServletRequest request, RoleMenuRelModInfo roleMenuRelModInfo){
//        String token = request.getHeader("token"); // 获取请求头中的token
//        return new JsonResult(roleService.updateMenuListByRole(token, roleMenuRelModInfo));
//    }
//

//
//    /**
//     * 获取角色权限请求
//     * @param request 请求头参数
//     * @return
//     */
//    @GetMapping("/permissions")
//    public JsonResult getRolePermissions(HttpServletRequest request, String roleid){
//        String token = request.getHeader("token");
//        return new JsonResult(roleService.getPermissionByRole(token, roleid));
//    }
//
//    /**
//     * 增加角色请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/addrole")
//    public JsonResult addRole(HttpServletRequest request, RoleInfo roleInfo){
//        String token = request.getHeader("token");
//        return new JsonResult(roleService.addRole(token, roleInfo));
//    }
//
//
//
//    /**
//     * 更新角色权限请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/updateper")
//    public JsonResult updateRolePermission(HttpServletRequest request, String roleid, String del_permission[], String add_permission[]){
//        String token = request.getHeader("token");
//        return new JsonResult(roleService.updatePermission(token, roleid, add_permission, del_permission));
//    }
//
//    /**
//     * 更新角色信息请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/updaterolename")
//    public JsonResult updateRoleInfo(HttpServletRequest request, String roleid, String changname){
//        String token = request.getHeader("token");
//        return new JsonResult(roleService.updateInfo(token, roleid, changname));
//    }


//    /**
//     * 获取角色列表请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/get_list")
//    public JsonResult getRoleList(HttpServletRequest request){
//        String token = request.getHeader("token");
//        List<SysRole> sysRoleList = roleService.getRoleList(token);
//        if(sysRoleList != null){
//            return new JsonResult(sysRoleList);
//        }
//        return new JsonResult(-1, "获取用户列表失败");
//    }
//
//    /**
//     * 增加角色请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/add")
//    public JsonResult addRole(HttpServletRequest request, RoleInfo roleInfo){
//        String token = request.getHeader("token");
//        if(roleService.addRole(token, roleInfo)){
//            return new JsonResult(1, "添加角色成功");
//        }
//        return new JsonResult(-1, "添加角色失败");
//    }
//
//    /**
//     * 删除角色请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/del")
//    public JsonResult delRole(HttpServletRequest request, String[] roleids){
//        String token = request.getHeader("token");
//        if(roleService.delRole(token, roleids)){
//            return new JsonResult(1, "删除角色成功");
//        }
//        return new JsonResult(-1, "删除角色失败");
//    }
//
//    /**
//     * 修改角色请求
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/mod")
//    public JsonResult modRole(HttpServletRequest request, RoleModInfo roleModInfo){
//        String token = request.getHeader("token");
//        if(roleService.modRole(token, roleModInfo)){
//            return new JsonResult(1, "修改角色成功");
//        }
//        return new JsonResult(-1, "修改角色失败");
//    }
//
//    /**
//     * 根据角色id查询角色信息
//     * @param request 请求头参数
//     * @return
//     */
//    @PostMapping("/get")
//    public JsonResult getRoleById(HttpServletRequest request, String roleid){
//        String token = request.getHeader("token");
//        RoleInfo roleInfo = roleService.getRoleById(token, roleid);
//        if(roleInfo != null){
//            return new JsonResult(roleInfo);
//        }
//        return new JsonResult(-1, "获取角色信息失败");
//    }

}
